package handlers

import (
	"fmt"
	"net/http"
	"time"

	"github.com/gin-gonic/gin"
)

// SubscribeHandler 处理 MQTT "subscribe" 事件
func SubscribeHandler(c *gin.Context) {
	// 获取请求中的 JSON 数据
	var jsonData map[string]interface{}
	if err := c.ShouldBindJSON(&jsonData); err != nil {
		c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
		return
	}

	// 启动 Goroutine 处理发布事件
	go handleSubscribe(jsonData)

	// 返回响应，防止阻塞
	c.JSON(http.StatusOK, gin.H{"status": "subscribe event received"})
}

// SubscribeHandler 处理 MQTT "subscribe" 事件
func UnsubscribeHanlder(c *gin.Context) {
	// 获取请求中的 JSON 数据
	var jsonData map[string]interface{}
	if err := c.ShouldBindJSON(&jsonData); err != nil {
		c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
		return
	}

	// 启动 Goroutine 处理发布事件
	go handleUnsubscribe(jsonData)

	// 返回响应，防止阻塞
	c.JSON(http.StatusOK, gin.H{"status": "unsubscribe event received"})
}

// handlePublish 是异步处理发布事件的函数
func handleSubscribe(data map[string]interface{}) {
	currentTime := time.Now()
	fmt.Printf("\n\n\n\n\n\n")
	fmt.Println(currentTime)
	fmt.Printf("Handling subscribe event: %v\n", data)
}

// handlePublish 是异步处理发布事件的函数
func handleUnsubscribe(data map[string]interface{}) {
	currentTime := time.Now()
	fmt.Printf("\n\n\n\n\n\n")
	fmt.Println(currentTime)
	fmt.Printf("Handling unsubcribe event: %v\n", data)
}
